| Ограничение времени | 4 секунды |
| Ограничение памяти | 256 Мб |
| Ввод | стандартный ввод или input.txt |
| Вывод | стандартный вывод или output.txt |
Максимальная оценка за эту задачу — 60 баллов, на проверку необходимо сдавать программу, решающую задачу
Для ускорения работы файловой системы на сервере необходимо накапливать операции ввода-вывода (транзакции) в буфере, а затем выполнять их.
Всего в буфере накоплено транзакций, пронумерованных от до . Память сервера состоит из участков, пронумерованных от до . Для каждой транзакции известно множество участков памяти, из которых данная транзакция производит чтение, и множество участков памяти, в которые она производит запись. Для -й транзакции обозначим эти множества как и .
Из заданного множества транзакций нужно выбрать некоторое подмножество и упорядочить транзакции внутри него.
Пусть было выбрано упорядоченное подмножество (последовательность) из транзакций с номерами . В выбранной последовательности транзакций не должно быть конфликтов. Конфликтом называется пара транзакций, в которой более ранняя транзакция записывает данные в область памяти, из которого затем читает другая транзакция. Более формально, транзакции и , где , конфликтуют, если существует такой участок памяти , что и .
По данному множеству транзакций вам нужно выбрать из него последовательность транзакций наибольшей возможной длины, не содержащей конфликтов. Вам не требуется находить оптимальное решение в данной задаче. Ваше решение получит количество баллов, пропорциональное длине найденной вами последовательности транзакций.
В первой строке вводятся два целых числа и — количество транзакций и участков памяти соответственно ( ; ). Далее следуют описания транзакций в порядке возрастания номеров.
Каждое описание транзакции содержит три строки. Первая из них содержит два целых числа и — размеры множеств и соответственно ( ). Вторая строка содержит различных целых чисел — элементы множества . Третья строка содержит различных целых чисел — элементы множества .
Суммарный всех по всем не превышает .
В первой строке выведите число — количество транзакций в выбранной последовательности.
Во второй строке выведите различных целых чисел — номера транзакций в порядке их выполнения.
За каждый тест в данной задаче вы можете получить вещественное количество баллов от до .
Если выведенная вами последовательность содержит конфликтующие транзакции, вы получите баллов за тест. В противном случае, вы получите баллов.
| Ввод | Вывод |
|---|---|
3 3 2 1 1 3 2 1 2 2 1 3 1 1 3 1 | 2 1 3 |